1. Technical Field
The present invention relates to server clustering. More specifically, it relates to asymmetric data-quality based dynamic server clustering with a workload management technique to balance inter-cluster workloads of servers.
2. Background Information
Many enterprise information systems use data centers that include a large number of data servers located in multiple geographical locations to maintain their data. These information systems typically assume that these data servers are stateless servers, which treat each request as an independent transaction unrelated to any previous request, or static servers connected to the same back-end databases. Under these assumptions, all data servers have exactly the same functions with identical qualities, which makes it hard for an information system to provide data with required data quality, and also makes it hard to scale.
Data in an enterprise information system may be stored in many copies in different places. For a system that works for millions of clients, and effectively responds to data accesses from different geographical locations, multiple active copies of the same data must be maintained to be current and consistent, and the time window in which the data are not current should be minimized. Since it usually takes time for a transaction data to be replicated from a master server to all replicated servers across geographical locations, different replicated servers in the enterprise system may have different lags. Moreover, transactions are committed every second in an enterprise system. Hence, lags on replicated servers change dynamically, depending on transaction rate, network traffic, geographic distance, or replication server capacities, etc. On the other hand, different clients may have different data quality requirements. For example, FIG. 1 illustrates five servers and three clients in an exemplar enterprise information system. At the moment as shown in FIG. 1, server 1 (101) is a server with a transaction lag of 0, server 120 (102) has a transaction lag of 50, server 260 (103) has a transaction lag of 19, server 800 (104) has a transaction lag of 1200, and server 960 (105) has a transaction lag of 1. At the same time, client 1 (106) has a data quality requirement of a lag of no more than 100 transactions. The data quality requirement of client 2 (107) is a lag of no more than 30 transactions, and the data quality requirement of client 3 (108) is a lag of no more than 1 transaction. Stateless or static severs cannot provide good performance if used in this system. For example, server 800 (104) should not be selected to service client 1 (106) because it cannot provide required data quality. Similarly, server 120 (102) cannot service client 2 (107).
The data quality problem can be further complicated by the ever-changing workloads of the servers in an enterprise information system. Typically, all clients want to access the server with best data quality, which may cause an overload of the server. And all clients attempt to avoid the server with the worst data quality, which may bring an underload to the server.
Data in an enterprise information system cannot be simply cloned to different data servers if the system must guarantee data quality, which makes the system difficult to scale. It is common that, in an enterprise system that stores multiple copies of the same data on different servers, some copies of the data are not current. Therefore, although a conventional enterprise system uses multiple data centers to keep the active copies of the same data, it seldom uses these copies to service clients because of the lack of confidence in the data quality. Most replicated data centers are only for failover or for disaster recovery purposes. However, since a failover or a disaster happens rarely, 99% of the time these replicated data centers are idle, thus resulting in a huge waste of resources.
Many enterprise information systems use clusters to enhance availability, scalability, and performance of their information systems. Most clusters assume that their constituent servers are stateless or static servers, and the clusters thus become symmetric. Symmetric clusters cannot guarantee to service different clients timely, without overloading or underloading the servers in the clusters.